﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using acessaDB;
using Frame;
using System.Data;
using System.Configuration;
using FirebirdSql.Data.FirebirdClient;
using Estrutura;


namespace Banco
{

    public class BD_Equipamento
    {
        #region variaveis_globais

        acessaDB.conectaDBFireBird fireBird = new conectaDBFireBird();
        string conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionLocal"];
        string usuario = string.Empty;

        #endregion

        #region construtor

        public BD_Equipamento()
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionProd"];
        }
        public BD_Equipamento(string usu_Login)
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionProd"];
            usuario = usu_Login;
        }

        #endregion

        #region metodos

        #region metodos padrão gerador

        public DataSet _retorna_Equipamento(string EQUIPAMENTO_ID,string PART_NUMBER_ID,string MODELO_ID,string PROPRIETARIO_ID,string EQU_CODIGO,string EQU_SERIAL_NUMBER,string EQU_OBSERVACAO,string USU_INSERT,string DATA_INSERT,string USU_UPDATE,string DATA_UPDATE,string OPERADOR_ID,string EQUIPAMENTO_PAI_ID)        
        {

            if (string.IsNullOrEmpty(EQUIPAMENTO_ID)) EQUIPAMENTO_ID = "'0'";
            if (string.IsNullOrEmpty(PART_NUMBER_ID)) PART_NUMBER_ID = "'0'";
            if (string.IsNullOrEmpty(MODELO_ID)) MODELO_ID = "'0'";
            if (string.IsNullOrEmpty(PROPRIETARIO_ID)) PROPRIETARIO_ID = "'0'";
            if (string.IsNullOrEmpty(EQU_CODIGO)) EQU_CODIGO = "''";
            if (string.IsNullOrEmpty(EQU_SERIAL_NUMBER)) EQU_SERIAL_NUMBER = "''";
            if (string.IsNullOrEmpty(EQU_OBSERVACAO)) EQU_OBSERVACAO = "''";
            if (string.IsNullOrEmpty(USU_INSERT)) USU_INSERT = "'0'";
            if (string.IsNullOrEmpty(DATA_INSERT)) DATA_INSERT = "''";
            if (string.IsNullOrEmpty(USU_UPDATE)) USU_UPDATE = "'0'";
            if (string.IsNullOrEmpty(DATA_UPDATE)) DATA_UPDATE = "''";
            if (string.IsNullOrEmpty(OPERADOR_ID)) OPERADOR_ID = "'0'";
            if (string.IsNullOrEmpty(EQUIPAMENTO_PAI_ID)) EQUIPAMENTO_PAI_ID = "'0'";

            string sql = "SELECT " +
                                  "EQUIPAMENTO.EQUIPAMENTO_ID, " +
                                  "EQUIPAMENTO.PART_NUMBER_ID, " +
                                  "PN_CADASTRO.PNU_PART_NUMBER, "+
                                  "PN_CADASTRO.PNU_DESCRICAO_INGLES, "+
                                  "EQUIPAMENTO.CTM_EQUIPAMENTO_TIPO_ID, "+
                                  "CTM_EQUIPAMENTO_TIPO.CET_DESCRICAO, "+                                  
                                  "EQUIPAMENTO.MODELO_ID, " +
                                  "EQUIPAMENTO.PROPRIETARIO_ID, " +
                                  "EQUIPAMENTO.EQU_CODIGO, " +
                                  "EQUIPAMENTO.EQU_SERIAL_NUMBER, " +
                                  "EQUIPAMENTO.EQUIPAMENTO_ID||' - '||COALESCE(EQUIPAMENTO.EQU_DESCRICAO, PN_CADASTRO.PNU_DESCRICAO_INGLES) EQU_DESCRICAO, " + 
                                  "EQUIPAMENTO.EQU_OBSERVACAO, " +
                                  "EQUIPAMENTO.USU_INSERT, " +
                                  "EQUIPAMENTO.DATA_INSERT, " +
                                  "EQUIPAMENTO.USU_UPDATE, " +
                                  "EQUIPAMENTO.DATA_UPDATE, " +
                                  "EQUIPAMENTO.OPERADOR_ID, " +
                                  "EQUIPAMENTO.EQUIPAMENTO_PAI_ID " +
                            "FROM EQUIPAMENTO " +
                            "LEFT JOIN MODELO ON MODELO.MODELO_ID = EQUIPAMENTO.MODELO_ID " +
                            "LEFT JOIN PN_CADASTRO ON PN_CADASTRO.PART_NUMBER_ID = EQUIPAMENTO.PART_NUMBER_ID " +
                            "LEFT JOIN CTM_EQUIPAMENTO_TIPO ON CTM_EQUIPAMENTO_TIPO.CTM_EQUIPAMENTO_TIPO_ID = EQUIPAMENTO.CTM_EQUIPAMENTO_TIPO_ID " +
                            //"LEFT JOIN ENTIDADE ON ENTIDADE.ENTIDADE_ID = EQUIPAMENTO.ENTIDADE_ID " +
                            //"LEFT JOIN USUARIO ON USUARIO.USUARIO_ID = EQUIPAMENTO.USUARIO_ID " +
                            //"LEFT JOIN USUARIO ON USUARIO.USUARIO_ID = EQUIPAMENTO.USUARIO_ID " +
                            //"LEFT JOIN ENTIDADE ON ENTIDADE.ENTIDADE_ID = EQUIPAMENTO.ENTIDADE_ID " +
                            "WHERE EQUIPAMENTO.EQUIPAMENTO_ID IN(16,52,53,54,55,56,57,58,59,60,61   ) AND " +
                            "      (EQUIPAMENTO.EQUIPAMENTO_ID                  = " + EQUIPAMENTO_ID + "  OR " + EQUIPAMENTO_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.PART_NUMBER_ID                  = " + PART_NUMBER_ID + "  OR " + PART_NUMBER_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.MODELO_ID                       = " + MODELO_ID + "  OR " + MODELO_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.PROPRIETARIO_ID                 = " + PROPRIETARIO_ID + "  OR " + PROPRIETARIO_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.EQU_CODIGO                      = " + EQU_CODIGO + "  OR " + EQU_CODIGO + " = '') AND " +
                            "      (EQUIPAMENTO.EQU_SERIAL_NUMBER               = " + EQU_SERIAL_NUMBER + "  OR " + EQU_SERIAL_NUMBER + " = '') AND " +
                            "      (EQUIPAMENTO.EQU_OBSERVACAO                  = " + EQU_OBSERVACAO + "  OR " + EQU_OBSERVACAO + " = '') AND " +
                            //"      (EQUIPAMENTO.USU_INSERT                      = " + USU_INSERT + "  OR " + USU_INSERT + " = '0') AND " +
                            //"      (EQUIPAMENTO.DATA_INSERT                     = " + DATA_INSERT + "  OR " + DATA_INSERT + " = '') AND " +
                            //"      (EQUIPAMENTO.USU_UPDATE                      = " + USU_UPDATE + "  OR " + USU_UPDATE + " = '0') AND " +
                            //"      (EQUIPAMENTO.DATA_UPDATE                     = " + DATA_UPDATE + "  OR " + DATA_UPDATE + " = '') AND " +
                            "      (EQUIPAMENTO.OPERADOR_ID                     = " + OPERADOR_ID + "  OR " + OPERADOR_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.EQUIPAMENTO_PAI_ID              = " + EQUIPAMENTO_PAI_ID + "  OR " + EQUIPAMENTO_PAI_ID + " = '0') ";

            DataSet dsRetorno = fireBird.retornaDataSet(sql, conectionString);
            return dsRetorno;

        }

        public FbDataReader _retorna_Equipamento_DR(string EQUIPAMENTO_ID, string PART_NUMBER_ID, string MODELO_ID, string PROPRIETARIO_ID, string EQU_CODIGO, string EQU_SERIAL_NUMBER, string EQU_OBSERVACAO, string USU_INSERT, string DATA_INSERT, string USU_UPDATE, string DATA_UPDATE, string OPERADOR_ID, string EQUIPAMENTO_PAI_ID)
        {

            if (string.IsNullOrEmpty(EQUIPAMENTO_ID)) EQUIPAMENTO_ID = "'0'";
            if (string.IsNullOrEmpty(PART_NUMBER_ID)) PART_NUMBER_ID = "'0'";
            if (string.IsNullOrEmpty(MODELO_ID)) MODELO_ID = "'0'";
            if (string.IsNullOrEmpty(PROPRIETARIO_ID)) PROPRIETARIO_ID = "'0'";
            if (string.IsNullOrEmpty(EQU_CODIGO)) EQU_CODIGO = "''";
            if (string.IsNullOrEmpty(EQU_SERIAL_NUMBER)) EQU_SERIAL_NUMBER = "''";
            if (string.IsNullOrEmpty(EQU_OBSERVACAO)) EQU_OBSERVACAO = "''";
            if (string.IsNullOrEmpty(USU_INSERT)) USU_INSERT = "'0'";
            if (string.IsNullOrEmpty(DATA_INSERT)) DATA_INSERT = "''";
            if (string.IsNullOrEmpty(USU_UPDATE)) USU_UPDATE = "'0'";
            if (string.IsNullOrEmpty(DATA_UPDATE)) DATA_UPDATE = "''";
            if (string.IsNullOrEmpty(OPERADOR_ID)) OPERADOR_ID = "'0'";
            if (string.IsNullOrEmpty(EQUIPAMENTO_PAI_ID)) EQUIPAMENTO_PAI_ID = "'0'";

            string sql = "SELECT " +
                                  "EQUIPAMENTO.EQUIPAMENTO_ID, " +
                                  "EQUIPAMENTO.PART_NUMBER_ID, " +
                                  "EQUIPAMENTO.MODELO_ID, " +
                                  "EQUIPAMENTO.PROPRIETARIO_ID, " +
                                  "EQUIPAMENTO.EQU_CODIGO, " +
                                  "EQUIPAMENTO.EQU_SERIAL_NUMBER, " +
                                  "EQUIPAMENTO.EQU_OBSERVACAO, " +
                                  "EQUIPAMENTO.USU_INSERT, " +
                                  "EQUIPAMENTO.DATA_INSERT, " +
                                  "EQUIPAMENTO.USU_UPDATE, " +
                                  "EQUIPAMENTO.DATA_UPDATE, " +
                                  "EQUIPAMENTO.OPERADOR_ID, " +
                                  "EQUIPAMENTO.EQUIPAMENTO_PAI_ID " +
                            "FROM EQUIPAMENTO " +
                            "LEFT JOIN MODELO ON MODELO.MODELO_ID = EQUIPAMENTO.MODELO_ID " +
                            "LEFT JOIN PN_CADASTRO ON PN_CADASTRO.PART_NUMBER_ID = EQUIPAMENTO.PART_NUMBER_ID " +
                //"LEFT JOIN ENTIDADE ON ENTIDADE.ENTIDADE_ID = EQUIPAMENTO.ENTIDADE_ID " +
                //"LEFT JOIN USUARIO ON USUARIO.USUARIO_ID = EQUIPAMENTO.USUARIO_ID " +
                //"LEFT JOIN USUARIO ON USUARIO.USUARIO_ID = EQUIPAMENTO.USUARIO_ID " +
                //"LEFT JOIN ENTIDADE ON ENTIDADE.ENTIDADE_ID = EQUIPAMENTO.ENTIDADE_ID " +
                            "WHERE " +
                            "      (EQUIPAMENTO.EQUIPAMENTO_ID                  = " + EQUIPAMENTO_ID + "  OR " + EQUIPAMENTO_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.PART_NUMBER_ID                  = " + PART_NUMBER_ID + "  OR " + PART_NUMBER_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.MODELO_ID                       = " + MODELO_ID + "  OR " + MODELO_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.PROPRIETARIO_ID                 = " + PROPRIETARIO_ID + "  OR " + PROPRIETARIO_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.EQU_CODIGO                      = " + EQU_CODIGO + "  OR " + EQU_CODIGO + " = '') AND " +
                            "      (EQUIPAMENTO.EQU_SERIAL_NUMBER               = " + EQU_SERIAL_NUMBER + "  OR " + EQU_SERIAL_NUMBER + " = '') AND " +
                            "      (EQUIPAMENTO.EQU_OBSERVACAO                  = " + EQU_OBSERVACAO + "  OR " + EQU_OBSERVACAO + " = '') AND " +
                //"      (EQUIPAMENTO.USU_INSERT                      = " + USU_INSERT + "  OR " + USU_INSERT + " = '0') AND " +
                //"      (EQUIPAMENTO.DATA_INSERT                     = " + DATA_INSERT + "  OR " + DATA_INSERT + " = '') AND " +
                //"      (EQUIPAMENTO.USU_UPDATE                      = " + USU_UPDATE + "  OR " + USU_UPDATE + " = '0') AND " +
                //"      (EQUIPAMENTO.DATA_UPDATE                     = " + DATA_UPDATE + "  OR " + DATA_UPDATE + " = '') AND " +
                            "      (EQUIPAMENTO.OPERADOR_ID                     = " + OPERADOR_ID + "  OR " + OPERADOR_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.EQUIPAMENTO_PAI_ID              = " + EQUIPAMENTO_PAI_ID + "  OR " + EQUIPAMENTO_PAI_ID + " = '0') ";

            FbConnection fbConexao = new FbConnection(conectionString);
            try
            {
                FbDataReader drRetorno = fireBird.retornaDataReader(sql, conectionString, fbConexao);
                return drRetorno;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }

        }

        public List<ES_Equipamento> _obter_Equipamento(string EQUIPAMENTO_ID, string PART_NUMBER_ID, string MODELO_ID, string PROPRIETARIO_ID, string EQU_CODIGO, string EQU_SERIAL_NUMBER, string EQU_OBSERVACAO, string USU_INSERT, string DATA_INSERT, string USU_UPDATE, string DATA_UPDATE, string OPERADOR_ID, string EQUIPAMENTO_PAI_ID)
        {

            if (string.IsNullOrEmpty(EQUIPAMENTO_ID)) EQUIPAMENTO_ID = "'0'";
            if (string.IsNullOrEmpty(PART_NUMBER_ID)) PART_NUMBER_ID = "'0'";
            if (string.IsNullOrEmpty(MODELO_ID)) MODELO_ID = "'0'";
            if (string.IsNullOrEmpty(PROPRIETARIO_ID)) PROPRIETARIO_ID = "'0'";
            if (string.IsNullOrEmpty(EQU_CODIGO)) EQU_CODIGO = "''"; else EQU_CODIGO = Util.retonarAspas(EQU_CODIGO + " % ");
            if (string.IsNullOrEmpty(EQU_SERIAL_NUMBER)) EQU_SERIAL_NUMBER = "''"; else EQU_SERIAL_NUMBER = Util.retonarAspas(EQU_SERIAL_NUMBER + " % ");
            if (string.IsNullOrEmpty(EQU_OBSERVACAO)) EQU_OBSERVACAO = "''"; else EQU_OBSERVACAO = Util.retonarAspas(EQU_OBSERVACAO + " % ");
            if (string.IsNullOrEmpty(USU_INSERT)) USU_INSERT = "'0'";
            if (string.IsNullOrEmpty(DATA_INSERT)) DATA_INSERT = "''"; else DATA_INSERT = Util.retonarAspas(DATA_INSERT + " % ");
            if (string.IsNullOrEmpty(USU_UPDATE)) USU_UPDATE = "'0'";
            if (string.IsNullOrEmpty(DATA_UPDATE)) DATA_UPDATE = "''"; else DATA_UPDATE = Util.retonarAspas(DATA_UPDATE + " % ");
            if (string.IsNullOrEmpty(OPERADOR_ID)) OPERADOR_ID = "'0'";
            if (string.IsNullOrEmpty(EQUIPAMENTO_PAI_ID)) EQUIPAMENTO_PAI_ID = "'0'";

            string sql = "SELECT " +
                                  "EQUIPAMENTO.EQUIPAMENTO_ID, " +
                                  "COALESCE(EQUIPAMENTO.EQUIPAMENTO_PAI_ID,0) EQUIPAMENTO_PAI_ID, " +
                                  "EQUIPAMENTO.PART_NUMBER_ID, " +
                                  "EQUIPAMENTO.MODELO_ID, " +
                                  "EQUIPAMENTO.PROPRIETARIO_ID, " +
                                  "EQUIPAMENTO.EQU_CODIGO, " +
                                  "EQUIPAMENTO.EQU_SERIAL_NUMBER, " +
                                  "EQUIPAMENTO.EQU_OBSERVACAO, " +
                                  "EQUIPAMENTO.USU_INSERT, " +
                                  "EQUIPAMENTO.DATA_INSERT, " +
                                  "EQUIPAMENTO.USU_UPDATE, " +
                                  "EQUIPAMENTO.DATA_UPDATE, " +
                                  "EQUIPAMENTO.OPERADOR_ID " +
                            "FROM EQUIPAMENTO " +
                            "LEFT JOIN MODELO ON MODELO.MODELO_ID = EQUIPAMENTO.MODELO_ID " +
                            "LEFT JOIN PN_CADASTRO ON PN_CADASTRO.PART_NUMBER_ID = EQUIPAMENTO.PART_NUMBER_ID " +
                //"LEFT JOIN ENTIDADE ON ENTIDADE.ENTIDADE_ID = EQUIPAMENTO.ENTIDADE_ID " +
                //"LEFT JOIN USUARIO ON USUARIO.USUARIO_ID = EQUIPAMENTO.USUARIO_ID " +
                //"LEFT JOIN USUARIO ON USUARIO.USUARIO_ID = EQUIPAMENTO.USUARIO_ID " +
                //"LEFT JOIN ENTIDADE ON ENTIDADE.ENTIDADE_ID = EQUIPAMENTO.ENTIDADE_ID " +
                            "WHERE " +
                            "      (EQUIPAMENTO.EQUIPAMENTO_ID                  = " + EQUIPAMENTO_ID + "  OR " + EQUIPAMENTO_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.PART_NUMBER_ID                  = " + PART_NUMBER_ID + "  OR " + PART_NUMBER_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.MODELO_ID                       = " + MODELO_ID + "  OR " + MODELO_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.PROPRIETARIO_ID                 = " + PROPRIETARIO_ID + "  OR " + PROPRIETARIO_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.EQU_CODIGO                      = " + EQU_CODIGO + "  OR " + EQU_CODIGO + " = '') AND " +
                            "      (EQUIPAMENTO.EQU_SERIAL_NUMBER               = " + EQU_SERIAL_NUMBER + "  OR " + EQU_SERIAL_NUMBER + " = '') AND " +
                //"      (EQUIPAMENTO.EQU_OBSERVACAO                  = " + EQU_OBSERVACAO + "  OR " + EQU_OBSERVACAO + " = '') AND " +
                //"      (EQUIPAMENTO.USU_INSERT                      = " + USU_INSERT + "  OR " + USU_INSERT + " = '0') AND " +
                //"      (EQUIPAMENTO.DATA_INSERT                     = " + DATA_INSERT + "  OR " + DATA_INSERT + " = '') AND " +
                //"      (EQUIPAMENTO.USU_UPDATE                      = " + USU_UPDATE + "  OR " + USU_UPDATE + " = '0') AND " +
                //"      (EQUIPAMENTO.DATA_UPDATE                     = " + DATA_UPDATE + "  OR " + DATA_UPDATE + " = '') AND " +
                            "      (EQUIPAMENTO.OPERADOR_ID                     = " + OPERADOR_ID + "  OR " + OPERADOR_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.EQUIPAMENTO_PAI_ID              = " + EQUIPAMENTO_PAI_ID + "  OR " + EQUIPAMENTO_PAI_ID + " = '0') " +
                            "ORDER BY EQUIPAMENTO_PAI_ID ";

            List<ES_Equipamento> lista = new List<ES_Equipamento>();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Equipamento item = new ES_Equipamento();
                    item.EQUIPAMENTO_ID = dr["EQUIPAMENTO_ID"].ToString();
                    item.PART_NUMBER_ID = dr["PART_NUMBER_ID"].ToString();
                    item.MODELO_ID = dr["MODELO_ID"].ToString();
                    item.PROPRIETARIO_ID = dr["PROPRIETARIO_ID"].ToString();
                    item.EQU_CODIGO = dr["EQU_CODIGO"].ToString();
                    item.EQU_SERIAL_NUMBER = dr["EQU_SERIAL_NUMBER"].ToString();
                    item.EQU_OBSERVACAO = dr["EQU_OBSERVACAO"].ToString();
                    item.USU_INSERT = dr["USU_INSERT"].ToString();
                    item.DATA_INSERT = dr["DATA_INSERT"].ToString();
                    item.USU_UPDATE = dr["USU_UPDATE"].ToString();
                    item.DATA_UPDATE = dr["DATA_UPDATE"].ToString();
                    item.OPERADOR_ID = dr["OPERADOR_ID"].ToString();
                    item.EQUIPAMENTO_PAI_ID = dr["EQUIPAMENTO_PAI_ID"].ToString();
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }

        

        #endregion

        //MÉTODO QUE PREENCHE ARVORE DO EQUIPAMENTO
        public DataSet _retornaArvoreEquipamento(string EQUIPAMENTO_ID,                                                  
                                                  string NIVEL_SAIDA,
                                                  string NIVEL_ENTRADA = "10")
        {
            if (string.IsNullOrEmpty(EQUIPAMENTO_ID)) EQUIPAMENTO_ID = "0";
            if (string.IsNullOrEmpty(NIVEL_SAIDA)) NIVEL_SAIDA = "1";
            if (string.IsNullOrEmpty(NIVEL_ENTRADA)) NIVEL_ENTRADA = "10";

            DataSet dsRetorno = new DataSet();
            if (string.IsNullOrEmpty(EQUIPAMENTO_ID))
                return dsRetorno;

            string sql = "SELECT (EQUIPAMENTO_ID||' - '||EQU_DESCRICAO||' (PN: '||COALESCE(PNU_PART_NUMBER,'')||' SN: '||COALESCE(EQU_SERIAL_NUMBER,'')||')') EQU_DESCRICAO, " +
                         "       EQUIPAMENTO_ID, "+
                         "       EQUIPAMENTO_PAI_ID, "+
                         "       NIVEL_HIERARQUICO, "+
                         "       LINHA, "+
                         "       LOOP, "+
                         "       EQU_SERIAL_NUMBER, "+
                         "       PART_NUMBER_ID, "+
                         "       PNU_PART_NUMBER, "+
                         "       PNU_DESCRICAO_INGLES, "+
                         "       DATA_INSTALACAO " +
                         "FROM FN_EQUIPAMENTO(" + EQUIPAMENTO_ID + ", "+NIVEL_ENTRADA+", "+NIVEL_SAIDA+")";
             dsRetorno = fireBird.retornaDataSet(sql, conectionString);
            //foreach (DataRow myDr in dsRetorno.Tables[0].Rows)
            //{
            //    string temp = myDr[0].ToString();
            //}
            return dsRetorno;  
        }
        
        //RETORNA GRAFICO POR INSPECÃO DO EQUIPAMENTO
        public DataSet _retornaChartEquipamento(string equipamento_id, string ctm_cad_inspecao_id, string ctm_cad_diretiva_id)
        {            
            if (string.IsNullOrEmpty(ctm_cad_inspecao_id)) ctm_cad_inspecao_id = "0";
            if (string.IsNullOrEmpty(ctm_cad_diretiva_id)) ctm_cad_diretiva_id = "0";

            
            DataSet dsRetorno = new DataSet();
            if (string.IsNullOrEmpty(equipamento_id))
                return dsRetorno;

            string sql = "SELECT COALESCE(CPE_VALOR,0) CPE_VALOR, " +
                     "           COALESCE(CPE_VALOR_UTILIZADO,0) CPE_VALOR_UTILIZADO, " +
                     "           COALESCE(CPE_VALOR_DISPONIVEL,0) CPE_VALOR_DISPONIVEL, " +
                     "           COALESCE(PERCENTUAL_PARA_PROXIMA_EXEC,0) PERCENTUAL_PARA_PROXIMA_EXEC " +
                     "FROM FN_EQUIPAMENTO_SERVICOS(" + equipamento_id + ",CURRENT_DATE) ";
            if (ctm_cad_inspecao_id != "0")
                sql += "WHERE CTM_CAD_INSPECAO_ID = " + ctm_cad_inspecao_id;
            else if (ctm_cad_diretiva_id != "0")
                sql += "WHERE CTM_CAD_DIRETIVA_ID = " + ctm_cad_diretiva_id;

            dsRetorno = fireBird.retornaDataSet(sql, conectionString);            
            return dsRetorno;
        }

        //DADO UM EQUIPAMENTO, RETORNA TODOS OS NIVEIS ACIMA
        public DataSet _retornaHierarquiaEquipamento(string EQUIPAMENTO_ID)
        {
            if (string.IsNullOrEmpty(EQUIPAMENTO_ID)) EQUIPAMENTO_ID = "0";            

            DataSet dsRetorno = new DataSet();
            if (string.IsNullOrEmpty(EQUIPAMENTO_ID))
                return dsRetorno;

            string sql = "SELECT "+
                         "       EQUIPAMENTO_ID, "+
                         "       EQUIPAMENTO_PAI_ID, "+
                         "       (EQUIPAMENTO_ID||'-'||EQU_DESCRICAO) EQU_DESCRICAO, " +
                         "       NIVEL_HIRARQUICO  " +
                         "FROM FN_EQUIPAMENTO_RETORNA_PAI_ARV(" + EQUIPAMENTO_ID + ")  ORDER BY  NIVEL_HIRARQUICO DESC ";
            dsRetorno = fireBird.retornaDataSet(sql, conectionString);
            //foreach (DataRow myDr in dsRetorno.Tables[0].Rows)
            //{
            //    string temp = myDr[0].ToString();
            //}
            return dsRetorno;
        }

        //CONSULTA EQUIPAMENTOS INSTALADOS     
        public List<ES_Equipamento_Instalados> _retorna_Equipamento_isntalacao(
                                                                                string EQUIPAMENTO_ID,
                                                                                string EQU_DESCRICAO,
                                                                                string PNU_PART_NUMBER,
                                                                                string EQU_SERIAL_NUMBER,
                                                                                string FABRICANTE_ID,
                                                                                string CVE_DATA                                              
                                                                                )
        {
            if (string.IsNullOrEmpty(EQUIPAMENTO_ID)) EQUIPAMENTO_ID = "0";            
            if (string.IsNullOrEmpty(EQU_DESCRICAO)) EQU_DESCRICAO = "''"; else EQU_DESCRICAO = Util.retonarAspas(EQU_DESCRICAO + "%");
            if (string.IsNullOrEmpty(PNU_PART_NUMBER)) PNU_PART_NUMBER = "''"; else PNU_PART_NUMBER = Util.retonarAspas(PNU_PART_NUMBER + "%");
            if (string.IsNullOrEmpty(EQU_SERIAL_NUMBER)) EQU_SERIAL_NUMBER = "''"; else EQU_SERIAL_NUMBER = Util.retonarAspas(EQU_SERIAL_NUMBER + "%");
            if (string.IsNullOrEmpty(FABRICANTE_ID)) FABRICANTE_ID = "0";
            if (string.IsNullOrEmpty(CVE_DATA)) CVE_DATA = Util.retonarAspas(Util.formataData(System.DateTime.Now.ToString())); else CVE_DATA = Util.retonarAspas(Util.formataData(CVE_DATA));
                        
            string sql = "SELECT DISTINCT Q.EQUIPAMENTO_PAI_ID, "+
                         "       Q.EQUIPAMENTO_ID, " +
                         "       Q.EQU_DESCRICAO, "+
                         "       Q.PART_NUMBER_ID, "+
                         "       P.PNU_PART_NUMBER, " +
                         "       Q.EQU_SERIAL_NUMBER, "+
                         "       Q.EQU_CODIGO, " +
                         "       P.FABRICANTE_ID, "+
                         "       (SELECT DATA_INSTALACAO FROM FN_EQUIPAMENTO_RETORNA_INSTAL(Q.EQUIPAMENTO_ID,Q.EQUIPAMENTO_PAI_ID,'N')) CVE_DATA, " +
                         "       (SELECT EQU_DESCRICAO FROM FN_EQUIPAMENTO_RETORNA_PAI(Q.EQUIPAMENTO_ID, 1)) EQU_CELULA " +
                         "FROM EQUIPAMENTO Q "+
                         "INNER JOIN PN_CADASTRO P ON (P.part_number_id = Q.part_number_id) "+
                         "INNER JOIN CTM_EVENTO E ON (E.equipamento_id = Q.equipamento_id) " +                                       
                         "WHERE " +
                         "      (Q.EQUIPAMENTO_ID               = " + EQUIPAMENTO_ID + "  OR " + EQUIPAMENTO_ID + " = 0) AND " +
                         "      (P.PNU_PART_NUMBER              LIKE " + PNU_PART_NUMBER + "  OR " + PNU_PART_NUMBER + " = '') AND " +                         
                         "      (Q.EQU_DESCRICAO                LIKE " + EQU_DESCRICAO + "  OR " + EQU_DESCRICAO + " = '') AND " +                         
                         "      (Q.EQU_SERIAL_NUMBER            LIKE " + EQU_SERIAL_NUMBER + "  OR " + EQU_SERIAL_NUMBER + " = '') AND " +
                         "      (P.FABRICANTE_ID                = " + FABRICANTE_ID + "  OR " + FABRICANTE_ID + " = 0) AND " +
                         "      (E.CVE_DATA                     = " + CVE_DATA + "  OR " + CVE_DATA + " = " + CVE_DATA + ") " +
                         "ORDER BY Q.EQU_DESCRICAO ";

            List<ES_Equipamento_Instalados> lista = new List<ES_Equipamento_Instalados>();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Equipamento_Instalados item = new ES_Equipamento_Instalados();
                    item.EQUIPAMENTO_PAI_ID = dr["EQUIPAMENTO_PAI_ID"].ToString();
                    item.EQUIPAMENTO_ID = dr["EQUIPAMENTO_ID"].ToString();
                    item.EQU_DESCRICAO = dr["EQU_DESCRICAO"].ToString();
                    item.PART_NUMBER_ID = dr["PART_NUMBER_ID"].ToString();
                    item.PNU_PART_NUMBER = dr["PNU_PART_NUMBER"].ToString();
                    item.EQU_SERIAL_NUMBER = dr["EQU_SERIAL_NUMBER"].ToString();
                    item.EQU_CODIGO = dr["EQU_CODIGO"].ToString();
                    item.FABRICANTE_ID = dr["FABRICANTE_ID"].ToString();
                    if (!string.IsNullOrEmpty(dr["CVE_DATA"].ToString()))
                        item.CVE_DATA = Util.formataData(dr["CVE_DATA"].ToString(), "dd/MM/yyyy");
                    item.EQU_CELULA = dr["EQU_CELULA"].ToString(); 
                    lista.Add(item);

               
                    
                }
                return lista;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }

        //RETORNAR DETALHES COMPLETOS DO EQUIPAMENTO
        public ES_Equipamento_Detalhe _obter_Equipamento_Detalhe(string EQUIPAMENTO_ID, string DATAREFERENCIA)
        {

            if (string.IsNullOrEmpty(EQUIPAMENTO_ID)) EQUIPAMENTO_ID = "0";
            if (string.IsNullOrEmpty(EQUIPAMENTO_ID)) DATAREFERENCIA = "CURRENT_DATE"; else DATAREFERENCIA = Util.retonarAspas(Util.formataData(DATAREFERENCIA));

            string sql = "SELECT EQUIPAMENTO_ID, "+
                         "       EQUIPAMENTO_PAI_ID, "+
                         "       EQUIPAMENTO_CELULA_ID, "+
                         "       EQU_SERIAL_NUMBER, "+
                         "       EQU_DESCRICAO, "+
                         "       PART_NUMBER_ID, "+
                         "       PNU_PART_NUMBER, "+
                         "       PNU_DESCRICAO_INGLES, "+
                         "       CTM_PLANO_MANUTENCAO_ID, "+
                         "       PLM_PLANO, "+
                         "       TSO, "+
                         "       CSO, "+
                         "       TSN, "+
                         "       CSN, " +
                         "       EQU_DATA_INSTAL, " +
                         "       EQU_DATA_FIRST_INSTAL, " +
                         "       EQU_DATA_FAB, " +
                         "       ATA_CODIGO " +
                         "FROM FN_EQUIPAMENTO_DETALHE(" + EQUIPAMENTO_ID + ", "+DATAREFERENCIA+") ";

            ES_Equipamento_Detalhe item = new ES_Equipamento_Detalhe();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    item.EQUIPAMENTO_ID = dr["EQUIPAMENTO_ID"].ToString();
                    item.EQUIPAMENTO_PAI_ID = dr["EQUIPAMENTO_PAI_ID"].ToString();
                    item.EQUIPAMENTO_CELULA_ID = dr["EQUIPAMENTO_CELULA_ID"].ToString();
                    item.EQU_DESCRICAO = dr["EQU_DESCRICAO"].ToString();
                    item.EQU_SERIAL_NUMBER = dr["EQU_SERIAL_NUMBER"].ToString();
                    item.PART_NUMBER_ID = dr["PART_NUMBER_ID"].ToString();
                    item.PNU_PART_NUMBER = dr["PNU_PART_NUMBER"].ToString();
                    item.PNU_DESCRICAO_INGLES = dr["PNU_DESCRICAO_INGLES"].ToString();
                    item.CTM_PLANO_MANUTENCAO_ID = dr["CTM_PLANO_MANUTENCAO_ID"].ToString();
                    item.PLM_PLANO = dr["PLM_PLANO"].ToString();
                    item.TSO = Util.formataReal2Casas(dr["TSO"].ToString());
                    item.CSO = Util.formataReal2Casas(dr["CSO"].ToString());
                    item.TSN = Util.formataReal2Casas(dr["TSN"].ToString());
                    item.CSN = Util.formataReal2Casas(dr["CSN"].ToString());
                    item.EQU_DATA_INSTAL = Util.formataData(dr["EQU_DATA_INSTAL"].ToString(), "dd/MM/yyyy", true);
                    item.EQU_DATA_FIRST_INSTAL = Util.formataData(dr["EQU_DATA_FIRST_INSTAL"].ToString(), "dd/MM/yyyy", true);
                    item.EQU_DATA_FAB = Util.formataData(dr["EQU_DATA_FAB"].ToString(), "dd/MM/yyyy", true);
                    item.ATA_CODIGO = dr["ATA_CODIGO"].ToString();  

                }
                return item;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }
       
        //DETALHAMENTO SIMPLES DO EQUIPAMENTO (PADRÃO GERADOR)
        public ES_Equipamento _obter_Equipamento_by_id(string EQUIPAMENTO_ID, bool dadosPN = false)
        {

            if (string.IsNullOrEmpty(EQUIPAMENTO_ID)) EQUIPAMENTO_ID = "0";

            string sql = "SELECT " +
                                  "EQUIPAMENTO.EQUIPAMENTO_PAI_ID, " +
                                  "EQUIPAMENTO.EQUIPAMENTO_ID, " +
                                  "EQUIPAMENTO.EQU_DESCRICAO, " +
                                  "EQUIPAMENTO.PART_NUMBER_ID, "+
                                  "EQUIPAMENTO.MODELO_ID, "+
                                  "EQUIPAMENTO.CTM_EQUIPAMENTO_TIPO_ID, "+
                                  "EQUIPAMENTO.CTM_PLANO_MANUTENCAO_ID, ";
            if (dadosPN)
            {
                sql +=            "PN_CADASTRO.PNU_PART_NUMBER, " +
                                  "PN_CADASTRO.FABRICANTE_ID, " +
                                  "PN_CADASTRO.PNU_DESCRICAO_INGLES, ";
            }
            sql +=                "EQUIPAMENTO.PROPRIETARIO_ID, " +
                                  "EQUIPAMENTO.CTM_EQUIPAMENTO_POSICAO_ID, " +  
                                  "EQUIPAMENTO.EQU_CODIGO, " +
                                  "EQUIPAMENTO.EQU_SERIAL_NUMBER, " +
                                  "EQUIPAMENTO.EQU_OBSERVACAO, " +
                                  "EQUIPAMENTO.USU_INSERT, " +
                                  "EQUIPAMENTO.DATA_INSERT, " +
                                  "EQUIPAMENTO.USU_UPDATE, " +
                                  "EQUIPAMENTO.DATA_UPDATE, " +
                                  "EQUIPAMENTO.OPERADOR_ID, " +
                                  "EQUIPAMENTO.ATA_CODIGO, "+
                                  "EQUIPAMENTO.EQU_DATA_FAB "+
                            "FROM EQUIPAMENTO ";
            if (dadosPN)
            {
                sql += "LEFT JOIN MODELO ON MODELO.MODELO_ID = EQUIPAMENTO.MODELO_ID " +
                       "LEFT JOIN PN_CADASTRO ON PN_CADASTRO.PART_NUMBER_ID = EQUIPAMENTO.PART_NUMBER_ID ";
            }
                /*
                 * "LEFT JOIN ENTIDADE ON ENTIDADE.ENTIDADE_ID = EQUIPAMENTO.ENTIDADE_ID " +
                "LEFT JOIN USUARIO ON USUARIO.USUARIO_ID = EQUIPAMENTO.USUARIO_ID " +
                "LEFT JOIN USUARIO ON USUARIO.USUARIO_ID = EQUIPAMENTO.USUARIO_ID " +
                "LEFT JOIN ENTIDADE ON ENTIDADE.ENTIDADE_ID = EQUIPAMENTO.ENTIDADE_ID " +
                 * *                 
                 */
              sql +=        "WHERE " +
                            "      (EQUIPAMENTO.EQUIPAMENTO_ID = " + EQUIPAMENTO_ID + "  OR " + EQUIPAMENTO_ID + " = 0) ";

            ES_Equipamento item = new ES_Equipamento();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    item.EQUIPAMENTO_PAI_ID = dr["EQUIPAMENTO_PAI_ID"].ToString();
                    item.EQUIPAMENTO_ID = dr["EQUIPAMENTO_ID"].ToString();
                    item.EQU_DESCRICAO = dr["EQU_DESCRICAO"].ToString();
                    item.PART_NUMBER_ID = dr["PART_NUMBER_ID"].ToString();
                    if (dadosPN)
                    {
                        item.PNU_PART_NUMBER = dr["PNU_PART_NUMBER"].ToString();
                        item.PNU_DESCRICAO_INGLES = dr["PNU_DESCRICAO_INGLES"].ToString();
                        item.FABRICANTE_ID = dr["FABRICANTE_ID"].ToString();
                    }
                    item.MODELO_ID = dr["MODELO_ID"].ToString();
                    item.CTM_EQUIPAMENTO_TIPO_ID = dr["CTM_EQUIPAMENTO_TIPO_ID"].ToString();
                    item.CTM_PLANO_MANUTENCAO_ID = dr["CTM_PLANO_MANUTENCAO_ID"].ToString();
                    item.PROPRIETARIO_ID = dr["PROPRIETARIO_ID"].ToString();
                    item.EQU_CODIGO = dr["EQU_CODIGO"].ToString();
                    item.EQU_SERIAL_NUMBER = dr["EQU_SERIAL_NUMBER"].ToString();
                    item.EQU_OBSERVACAO = dr["EQU_OBSERVACAO"].ToString();
                    item.USU_INSERT = dr["USU_INSERT"].ToString();
                    item.DATA_INSERT = dr["DATA_INSERT"].ToString();
                    item.USU_UPDATE = dr["USU_UPDATE"].ToString();
                    item.DATA_UPDATE = dr["DATA_UPDATE"].ToString();
                    item.OPERADOR_ID = dr["OPERADOR_ID"].ToString();
                    item.ATA_CODIGO = dr["ATA_CODIGO"].ToString();
                    item.EQU_DATA_FAB = Util.formataData(dr["EQU_DATA_FAB"].ToString(), "dd/MM/yyyy", true);
                }
                return item;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }

        //RETORNAR ID DO EQUIPAMENTO
        public string _obter_Equipamento_id(string EQU_SERIAL_NUMBER)
        {
            if (string.IsNullOrEmpty(EQU_SERIAL_NUMBER)) EQU_SERIAL_NUMBER = "'0'"; else EQU_SERIAL_NUMBER = Util.retonarAspas(EQU_SERIAL_NUMBER);
            string sql = "SELECT EQUIPAMENTO.EQUIPAMENTO_ID FROM EQUIPAMENTO WHERE EQU_SERIAL_NUMBER = "+EQU_SERIAL_NUMBER;
            
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            string result = "";
            try
            {
                while (dr.Read())
                {                    
                    result = dr["EQUIPAMENTO_ID"].ToString();                    
                }
                return result;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }


        //RETORNAR ID DO EQUIPAMENTO
        public string _obter_Equipamento_ModeloId(string EQUIPAMENTO_ID)
        {
            if (string.IsNullOrEmpty(EQUIPAMENTO_ID)) EQUIPAMENTO_ID = "0";
            string sql = "SELECT EQUIPAMENTO.MODELO_ID FROM EQUIPAMENTO WHERE EQUIPAMENTO_ID = " + EQUIPAMENTO_ID;

            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            string result = "";
            try
            {
                while (dr.Read())
                {
                    result = dr["MODELO_ID"].ToString();
                }
                return result;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }

        //TODOS OS SERVICOS DE UM EQUIPAMENTO, FILTRADOS PELO STATUS DO SERVICO
        public List<ES_Equipamento_Servico> _retorna_Equipamento_servicoStatus(
                                                                                string P_EQUIPAMENTO_ID,                                                                               
                                                                                string P_DATA_REFERENCIA,
                                                                                string P_TIPOSERVICO,
                                                                                string P_STATUS_SERVICO
                                                                                )
        {
            if (string.IsNullOrEmpty(P_EQUIPAMENTO_ID)) P_EQUIPAMENTO_ID = "0";
            if (string.IsNullOrEmpty(P_DATA_REFERENCIA)) P_DATA_REFERENCIA = Util.retonarAspas(Util.formataData(System.DateTime.Now.ToString())); else P_DATA_REFERENCIA = Util.retonarAspas(Util.formataData(P_DATA_REFERENCIA));
            if (string.IsNullOrEmpty(P_TIPOSERVICO)) P_TIPOSERVICO = "TODOS";
            if (string.IsNullOrEmpty(P_STATUS_SERVICO)) P_STATUS_SERVICO = "TODOS"; 

            string sql = "SELECT CTM_PLANO_MANUTENCAO_SERVICO_ID , "+
                         "       CTM_PLANO_MANUTENCAO_ID , "+
                         "       PLM_PLANO , "+
                         "       CTM_CAD_INSPECAO_ID , "+
                         "       INS_DESCRICAO , "+
                         "       CTM_CAD_DIRETIVA_ID , "+
                         "       CDI_DIRETIVA , "+
                         "       CDI_NUMERO , "+
                         "       SERVICO_ID, "+
                         "       SERVICO , " +
                         "       PMA_DATA_LIMITE_EXECUCAO , "+
                         "       STATUS_SERVICO , "+
                         "       STATUS_VENCIDO , "+
                         "       ULTIMA_EXECUCAO , "+
                         "       CTM_UNIDADE_MEDIDA_ID , "+
                         "       CMU_DESCRICAO , "+
                         "       CPE_VALOR , "+
                         "       CEU_MEDIA_UTILIZACAO , "+
                         "       CMU_TIPO_UNIDADE , "+
                         "       VALOR_PROXIMA_EXECUCAO , "+
                         "       PERCENTUAL_PARA_PROXIMA_EXEC , "+
                         "       DATA_PARA_PROXIMA_EXEC  " +
                         "FROM FN_EQUIPAMENTO_SERVICOS("+P_EQUIPAMENTO_ID+", "+P_DATA_REFERENCIA+") "+
                         "WHERE 1=1 ";
            if (P_TIPOSERVICO.ToUpper() == "DIRETIVAS")            
                sql +=   "AND CTM_CAD_DIRETIVA_ID IS NOT NULL ";
            else if (P_TIPOSERVICO.ToUpper() == "INSPECOES")
                sql +=   "AND CTM_CAD_INSPECAO_ID IS NOT NULL ";

            if (P_STATUS_SERVICO.ToUpper() != "TODOS")
            {
                sql += "AND STATUS_SERVICO IN (";
                string sqlStatus = "";
                string[] arrayStatusServico = P_STATUS_SERVICO.Split(new char[] { ';' });
                foreach (string myStatus in arrayStatusServico)
                {
                                        //a passagem de parametros será textual, via URL com under line no lugar de espaços
                    sqlStatus += Util.retonarAspas(myStatus.Replace("_", " ").ToUpper()) + ", ";
                }
                //limpar ultima vrigula
                sqlStatus = sqlStatus.Substring(0, sqlStatus.Trim().Length - 1);
                sql += sqlStatus+")";
            }


            List<ES_Equipamento_Servico> lista = new List<ES_Equipamento_Servico>();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Equipamento_Servico item = new ES_Equipamento_Servico();
                    item.CTM_PLANO_MANUTENCAO_SERVICO_ID    = dr["CTM_PLANO_MANUTENCAO_SERVICO_ID"].ToString();
                    item.CTM_PLANO_MANUTENCAO_ID            = dr["CTM_PLANO_MANUTENCAO_ID"].ToString();
                    item.PLM_PLANO                          = dr["PLM_PLANO"].ToString();
                    item.CTM_CAD_INSPECAO_ID                = dr["CTM_CAD_INSPECAO_ID"].ToString();
                    item.INS_DESCRICAO                      = dr["INS_DESCRICAO"].ToString();
                    item.CTM_CAD_DIRETIVA_ID                = dr["CTM_CAD_DIRETIVA_ID"].ToString();
                    item.CDI_DIRETIVA                       = dr["CDI_DIRETIVA"].ToString();
                    item.CDI_NUMERO                         = dr["CDI_NUMERO"].ToString();
                    item.SRV_DESCRICAO                      = dr["SERVICO"].ToString();
                    item.SERVICO_ID                         = dr["SERVICO_ID"].ToString();
                    item.PMA_DATA_LIMITE_EXECUCAO           = dr["PMA_DATA_LIMITE_EXECUCAO"].ToString();
                    item.STATUS_SERVICO                     = dr["STATUS_SERVICO"].ToString();
                    item.STATUS_VENCIDO                     = dr["STATUS_VENCIDO"].ToString();
                    item.ULTIMA_EXECUCAO                    = Util.formataData(dr["ULTIMA_EXECUCAO"].ToString(), "dd/MM/yyyy", true);
                    item.CTM_UNIDADE_MEDIDA_ID              = dr["CTM_UNIDADE_MEDIDA_ID"].ToString();
                    item.CMU_DESCRICAO                      = dr["CMU_DESCRICAO"].ToString();
                    item.CPE_VALOR                          = dr["CPE_VALOR"].ToString();
                    item.CEU_MEDIA_UTILIZACAO               = dr["CEU_MEDIA_UTILIZACAO"].ToString();
                    item.CMU_TIPO_UNIDADE                   = dr["CMU_TIPO_UNIDADE"].ToString();
                    item.VALOR_PROXIMA_EXECUCAO             = dr["VALOR_PROXIMA_EXECUCAO"].ToString();
                    item.PERCENTUAL_PARA_PROXIMA_EXEC       = dr["PERCENTUAL_PARA_PROXIMA_EXEC"].ToString();
                    item.DATA_PARA_PROXIMA_EXEC             = Util.formataData(dr["DATA_PARA_PROXIMA_EXEC"].ToString(), "dd/MM/yyyy", true);
                    //retornar serviço de forma genérica
                    if (!string.IsNullOrEmpty(item.CTM_CAD_DIRETIVA_ID))
                    {
                        item.SERVICO_ID = item.CTM_CAD_DIRETIVA_ID;
                        item.SRV_DESCRICAO = item.CDI_NUMERO + " - " + item.CDI_DIRETIVA;
                    }
                    else
                    {
                        item.SERVICO_ID = item.CTM_CAD_INSPECAO_ID;
                        item.SRV_DESCRICAO = item.INS_DESCRICAO;
                    }
                    lista.Add(item);
                }
                return lista;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }



        //RETORNAR ID E DESCRICAO DOS SERVICOS APLICAVEIS AO EQUIPAMENTO
        public List<ES_Equipamento_SRV> _retorna_Equipamento_srv(string P_EQUIPAMENTO_ID)
        {
            if (string.IsNullOrEmpty(P_EQUIPAMENTO_ID)) P_EQUIPAMENTO_ID = "0";
            string sql = "SERVICO_ID, SERVICO_DESC, SERVICO_TIPO FROM FN_EQUIPAMENTO_RETORNA_SRV("+P_EQUIPAMENTO_ID+") ";

            List<ES_Equipamento_SRV> lista = new List<ES_Equipamento_SRV>();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Equipamento_SRV item = new ES_Equipamento_SRV();
                    item.SERVICO_ID = dr["SERVICO_ID"].ToString();
                    item.SERVICO_DESC = dr["SERVICO_DESC"].ToString();
                    item.SERVICO_TIPO = dr["SERVICO_TIPO"].ToString();
                    lista.Add(item);
                }
                return lista;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }

        //RETORNAR ESTOQUE (EQUIPAMENTOS COM CÓDIGO = ESTOQUE
        public List<ES_Equipamento> _obter_Equipamento_Estoque()
        {            
            string sql = "SELECT EQUIPAMENTO_ID, " +
                         "       EQU_DESCRICAO " +                         
                         "FROM EQUIPAMENTO WHERE EQUIPAMENTO.EQU_CODIGO = 'ESTOQUE' "+
                         "ORDER BY EQU_DESCRICAO";

            List<ES_Equipamento> lista = new List<ES_Equipamento>();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Equipamento item = new ES_Equipamento();
                    item.EQUIPAMENTO_ID = dr["EQUIPAMENTO_ID"].ToString();                    
                    item.EQU_DESCRICAO = dr["EQU_DESCRICAO"].ToString();
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }

        public List<ES_Servicos> _obter_Servicos(string EQUIPAMENTO_ID)
        {

            if (string.IsNullOrEmpty(EQUIPAMENTO_ID)) EQUIPAMENTO_ID = "0";

            string sql = "SELECT SERVICO_ID, SERVICO_DESCRICAO FROM FN_EQUIPAMENTO_SERVICOS_LISTA("+EQUIPAMENTO_ID+")";

            List<ES_Servicos> lista = new List<ES_Servicos>();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Servicos item = new ES_Servicos();
                    item.SERVICO_ID = dr["SERVICO_ID"].ToString();
                    item.SERVICO_DESCRICAO = dr["SERVICO_DESCRICAO"].ToString();
                    
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }

        public void sp_equipamento_inserir(string P_EQUIPAMENTO_ID,
                                            string P_EQUIPAMENTO_PAI_ID,
                                            string P_PART_NUMBER_ID,
                                            string P_MODELO_ID,
                                            string P_PROPRIETARIO_ID,
                                            string P_CTM_EQUIPAMENTO_POSICAO_ID,
                                            string P_CTM_EQUIPAMENTO_TIPO_ID,
                                            string P_CTM_PLANO_MANUTENCAO_ID,
                                            string P_OPERADOR_ID,
                                            string P_EQU_DESCRICAO,
                                            string P_EQU_CODIGO,
                                            string P_EQU_SERIAL_NUMBER,
                                            string P_EQU_OBSERVACAO,
                                            string P_EQU_DATA_FAB,
                                            string P_ATA_CODIGO,
                                            string P_USU_INSERT,
                                            string P_INSTALAR_EQUIPAMENTO)
        {
            string sql = "EXECUTE PROCEDURE SP_CTM_EQUIPAMENTO_INSERIR (NULL, " +
                         "                                        " + Util.retonarNull(P_EQUIPAMENTO_PAI_ID) + ", " +
                         "                                        " + Util.retonarNull(P_PART_NUMBER_ID) + ", " +
                         "                                        " + Util.retonarNull(P_MODELO_ID) + ", " +
                         "                                        " + Util.retonarNull(P_PROPRIETARIO_ID) + ", " +
                         "                                        " + Util.retonarNull(P_CTM_EQUIPAMENTO_POSICAO_ID) + ", " +
                         "                                        " + Util.retonarNull(P_CTM_EQUIPAMENTO_TIPO_ID) + ", " +
                         "                                        " + Util.retonarNull(P_CTM_PLANO_MANUTENCAO_ID) + ", " +
                         "                                        " + Util.retonarNull(P_OPERADOR_ID) + ", " +
                         "                                        " + Util.retonarAspas(P_EQU_DESCRICAO, true) +", "+
                         "                                        " + Util.retonarAspas(P_EQU_CODIGO, true) + ", " +
                         "                                        " + Util.retonarAspas(P_EQU_SERIAL_NUMBER, true) + ", " +
                         "                                        " + Util.retonarAspas(P_EQU_OBSERVACAO, true) + ", " +
                         "                                        " + Util.retonarAspas(Util.formataData(P_EQU_DATA_FAB), true) + ", " +
                         "                                        " + Util.retonarAspas(P_ATA_CODIGO, true) + ", " +
                         "                                        NULL, " +
                         "                                        " + Util.retonarAspas(P_INSTALAR_EQUIPAMENTO, true) + ")";
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }

        public void _inserir_Equipamento(
                                                string EQUIPAMENTO_ID,
                                                string EQU_DESCRICAO,
                                                string PART_NUMBER_ID,
                                                string MODELO_ID,
                                                string PROPRIETARIO_ID,
                                                string EQU_CODIGO,
                                                string EQU_SERIAL_NUMBER,
                                                string EQU_OBSERVACAO,
                                                string USU_INSERT,
                                                string DATA_INSERT,
                                                string USU_UPDATE,
                                                string DATA_UPDATE,
                                                string OPERADOR_ID,
                                                string EQUIPAMENTO_PAI_ID,
                                                string CTM_EQUIPAMENTO_TIPO_ID,
                                                string CTM_PLANO_MANUTENCAO_ID,
                                                string ATA_CODIGO,
                                                string EQU_DATA_FAB
                                                )
        {

            string sql = " INSERT INTO EQUIPAMENTO " +
                         "      ( " +
                         "          EQU_DESCRICAO                  , " + 
                         "          PART_NUMBER_ID                 , " +
                         "          MODELO_ID                      , " +
                         "          PROPRIETARIO_ID                , " +
                         "          EQU_CODIGO                     , " +
                         "          EQU_SERIAL_NUMBER              , " +
                         "          EQU_OBSERVACAO                 , " +
                         "          USU_INSERT                     , " +
                         "          DATA_INSERT                    , " +
                         //"          USU_UPDATE                     , " +
                         //"          DATA_UPDATE                    , " +
                         "          OPERADOR_ID                    , " +
                         "          EQUIPAMENTO_PAI_ID             , " +
                         "          CTM_EQUIPAMENTO_TIPO_ID        , " +
                         "          CTM_PLANO_MANUTENCAO_ID        , " +
                         "          ATA_CODIGO                     ,  " +
                         "          EQU_DATA_FAB                       " +
                 "      )" +
                 "  VALUES " +
                 "      ( " +
                              Util.retonarAspas(EQU_DESCRICAO,true) + ", " +
                              Util.retonarNull(PART_NUMBER_ID) + ", " +
                              Util.retonarNull(MODELO_ID) + ", " +
                              Util.retonarNull(PROPRIETARIO_ID) + ", " +
                              Util.retonarAspas(EQU_CODIGO, true) + ", " +
                              Util.retonarAspas(EQU_SERIAL_NUMBER, true) + ", " +
                              Util.retonarAspas(EQU_OBSERVACAO, true) + ", " +
                              Util.retonarAspas(USU_INSERT, true) + ", " +
                              "CURRENT_TIMESTAMP, " +
                              //Util.retonarAspas(USU_UPDATE, true) + ", " +
                              //Util.retonarAspas(DATA_UPDATE, true) + ", " +
                              Util.retonarNull(OPERADOR_ID) + ", " +
                              Util.retonarNull(EQUIPAMENTO_PAI_ID) + ", " +
                              Util.retonarNull(CTM_EQUIPAMENTO_TIPO_ID) + ", " +
                              Util.retonarNull(CTM_PLANO_MANUTENCAO_ID) + ", " +
                              Util.retonarAspas(ATA_CODIGO, true) + ", " +
                              Util.retonarAspas(Util.formataData(EQU_DATA_FAB), true) + 
                 "      )";
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _atualizar_Equipamento(
                                                string EQUIPAMENTO_ID,
                                                string EQU_DESCRICAO,
                                                string PART_NUMBER_ID,
                                                string MODELO_ID,
                                                string PROPRIETARIO_ID,
                                                string CTM_EQUIPAMENTO_POSICAO_ID,
                                                string EQU_CODIGO,
                                                string EQU_SERIAL_NUMBER,
                                                string EQU_OBSERVACAO,
                                                string USU_INSERT,
                                                string DATA_INSERT,
                                                string USU_UPDATE,
                                                string DATA_UPDATE,
                                                string OPERADOR_ID,
                                                string EQUIPAMENTO_PAI_ID,
                                                string CTM_EQUIPAMENTO_TIPO_ID,
                                                string CTM_PLANO_MANUTENCAO_ID,
                                                string ATA_CODIGO,
                                                string EQU_DATA_FAB
                                                )
        {

            string sql = " UPDATE EQUIPAMENTO SET " +
                         "      PART_NUMBER_ID                  = " + Util.retonarNull(PART_NUMBER_ID) + ", " +
                         "      EQU_DESCRICAO                   = " + Util.retonarAspas(EQU_DESCRICAO,true) + ", " +
                         "      MODELO_ID                       = " + Util.retonarNull(MODELO_ID) + ", " +
                         "      PROPRIETARIO_ID                 = " + Util.retonarNull(PROPRIETARIO_ID) + ", " +
                         "      CTM_EQUIPAMENTO_POSICAO_ID      = " + Util.retonarNull(CTM_EQUIPAMENTO_POSICAO_ID) + ", " +
                         "      EQU_CODIGO                      = " + Util.retonarAspas(EQU_CODIGO, true) + ", " +
                         "      EQU_SERIAL_NUMBER               = " + Util.retonarAspas(EQU_SERIAL_NUMBER, true) + ", " +
                         "      EQU_OBSERVACAO                  = " + Util.retonarAspas(EQU_OBSERVACAO, true) + ", " +
                         //"      USU_INSERT                      = " + Util.retonarAspas(USU_INSERT, true) + ", " +
                         //"      DATA_INSERT                     = " + Util.retonarAspas(DATA_INSERT, true) + ", " +
                         "      USU_UPDATE                      = " + Util.retonarAspas(USU_UPDATE, true) + ", " +
                         "      DATA_UPDATE                     =   CURRENT_TIMESTAMP, " +
                         "      OPERADOR_ID                     = " + Util.retonarNull(OPERADOR_ID) + ", " +
                         "      EQUIPAMENTO_PAI_ID              = " + Util.retonarNull(EQUIPAMENTO_PAI_ID) + ", " +
                         "      CTM_EQUIPAMENTO_TIPO_ID         = " + Util.retonarNull(CTM_EQUIPAMENTO_TIPO_ID) + ", " +
                         "      CTM_PLANO_MANUTENCAO_ID         = " + Util.retonarNull(CTM_PLANO_MANUTENCAO_ID) + ", " +
                         "      ATA_CODIGO                      = " + Util.retonarAspas(ATA_CODIGO, true) + ", " +
                         "      EQU_DATA_FAB                    = " + Util.retonarAspas(Util.formataData(EQU_DATA_FAB), true) +
                         " WHERE EQUIPAMENTO_ID =  " + EQUIPAMENTO_ID;
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _excluir_Equipamento(string EQUIPAMENTO_ID)
        {
            string sql = "DELETE FROM EQUIPAMENTO WHERE EQUIPAMENTO_ID = " + EQUIPAMENTO_ID;
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }

        public void _alterar_Equipamento_Pai_Id(string EQUIPAMENTO_ID, string EQUIPAMENTO_PAI_ID)
        {
            string sql = "UPDATE EQUIPAMENTO SET EQUIPAMENTO_PAI_ID = " + EQUIPAMENTO_PAI_ID + " WHERE EQUIPAMENTO_ID = " + EQUIPAMENTO_ID;
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        #endregion
    }
}
